library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readr)
library(magrittr)
raw <- readr::read_csv("C:/Users/CMC/Downloads/Current_Employee_Names__Salaries__and_Position_Titles_-_Full-time.csv")
## Parsed with column specification:
## cols(
## Name = col_character(),
## `Job Titles` = col_character(),
## Department = col_character(),
## `Full or Part-Time` = col_logical(),
## `Salary or Hourly` = col_character(),
## `Typical Hours` = col_double(),
## `Annual Salary` = col_double(),
## `Hourly Rate` = col_double()
## )
rawweek<-raw[which(is.na(raw$`Annual Salary`)),]
rawweek$`Annual Salary` <- rawweek$`Hourly Rate` * rawweek$`Typical Hours` * 52
rawan <- raw[which(!is.na(raw$`Annual Salary`)),]
raw <- rbind(rawan, rawweek)
raw %>%
select(`Job Titles`,
`Department`,
`Annual Salary`) %>%
mutate(`Job` = paste0(`Job Titles`, "_", `Department`)) %>%
return(.) -> raw
raw$`Annual Salary` <- (raw$`Annual Salary`)/10000
raw %>%
group_by(`Job Titles`, Department) %>%
summarise(as = median(`Annual Salary`)) %>%
return(.) -> meds
raw2 <- cbind.data.frame(
source = c(raw$Job, rep("Chicago", times= length(unique(raw$Department))) ),
target = c(raw$Department, unique(raw$Department)),
name = c(raw$`Job Titles`, rep("Chicago", times= length(unique(raw$Department)))),
value= c(raw$`Annual Salary` /9000, rep(1, times= length(unique(raw$Department)))),
stringsAsFactors = FALSE)
z <- unique(c(raw2$source, raw2$target))
raw3 <- list(id = unique(c(raw2$source, raw2$target)))
ww <- unname(unlist(lapply(raw3$id,
function(x){
w <- meds[which(x == meds$`Job Titles`), "as"]
if(nrow(w) == 0){
return(1)
}else{
return(as.numeric(w))
}
})))
raw3 <- c(raw3, list(sal=ww))
bipartite <- threeNet::igraph_to_networkD3(raw2, raw3)
threeNet::threeNet(jsonlite::toJSON(bipartite), width=.5)